//种花问题------605
//假设有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花不能种植在相邻的地块上，它们会争夺水源，两者都会死去。
// 给你一个整数数组 flowerbed 表示花坛，由若干 0 和 1 组成，其中 0 表示没种植花，1 表示种植了花。另有一个数 n ，能否在不打破种植规则的情况下种入 n 朵花？能则返回 true ，不能则返回 false 。

#include <stdio.h>
#include <stdbool.h>

void Print(int *s,int len)
{
    for(int i = 0; i < len; i++)
    {
        printf("%d ",s[i]);
    }
    printf("\n");
}

bool canPlaceFlowers(int* flowerbed, int flowerbedSize, int n) 
{
    int count = 0;
    if(flowerbed[0] == 0 && flowerbed[1] == 0)
        {
            count++;
            flowerbed[0] = 1;
        }
    if(flowerbed[flowerbedSize-2] == 0 && flowerbed[flowerbedSize - 1] == 0)
    {
        {
            count++;
            flowerbed[flowerbedSize - 1] = 1;
        }
    }
    for(int i = 1; i < flowerbedSize - 1; i++)
    {
        if(flowerbed[i-1] == 0 && flowerbed[i+1] == 0 && flowerbed[i] != 1)
        {
            flowerbed[i] = 1;
            count++;
        }
    }
    if(count >= n)
        return true;
    return false;
}

int main()
{
    int p1[] = {1,0,0,0,0,0,1};
    int n;
    printf("你要插入几朵花?\n");
    scanf("%d",&n);
    if(canPlaceFlowers(p1,sizeof(p1)/4,n) == 1)
    {
        printf("可以插入%d朵花\n",n);
    }
    else printf("不可以插入%d朵花\n",n);
    return 0;
}